/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package isgesis;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Agustin
 */
public class PersistenciaLugar {

    private static PersistenciaLugar instance;

    public static PersistenciaLugar getInstance() {
        if (instance == null) {
            instance = new PersistenciaLugar();
        }
        return instance;
    }

    public ResultSet ejecutarSeleccion(String query) throws SQLException {
        ResultSet rs;
        try {
            Conexion.getInstance().conectar();
            rs = Conexion.getInstance().select(query);
        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return rs;
    }

    public Lugar recorerRS(ResultSet rs) throws SQLException, ParseException {
        Lugar l1 = new Lugar();
        try {
            l1.setId(Integer.parseInt(rs.getObject(1).toString()));
            l1.setNombreLugar(rs.getObject(2).toString());
            l1.setTipo(rs.getObject(3).toString());
            l1.setDireccion(rs.getObject(4).toString());
            l1.setResponsable(rs.getObject(5).toString());
            ArrayList<Object> datos= new ArrayList<Object>();
            datos.add(l1.getId());
            datos.add("idLugar");
            l1.setTelefonos(PersistenciaTelefono.getInstance().selectTelefonos(datos));

        } catch (Exception e) {
            throw new UnsupportedOperationException(e.toString());
        }
        return l1;
    }

    public List<Lugar> traerRS(String query) throws ParseException {
        List<Lugar> lugares = new ArrayList<Lugar>();
        try {
            ResultSet rs = ejecutarSeleccion(query);
            if (rs.next()) {
                lugares.add(recorerRS(rs));
                while (rs.next()) {
                    lugares.add(recorerRS(rs));
                }
            } else {
                Lugar l = new Lugar();
                lugares.add(l);
            }
        } catch (SQLException ex) {
            Logger.getLogger(PersistenciaCliente.class.getName()).log(Level.SEVERE, null, ex);
        }
        return lugares;
    }

    public List<Lugar> selectLugares(ArrayList<Object> datos) throws ParseException, SQLException {
        String query = "";
        if (datos.get(1) == "idCliente") {
            query = "SELECT * FROM lugares WHERE idCliente=" + datos.get(0);
        } else if (datos.get(1) == "idLugar") {
            query = "SELECT * FROM lugares WHERE idLugar=" + datos.get(0);
        } else {
            query = "SELECT * FROM lugares WHERE nombre=" + datos.get(0);
        }
        return traerRS(query);
    }

    public void insert(Lugar lugar, Integer idCliente) throws ParseException {
        try {
            String query = "INSERT INTO lugares (nombreLugar,direccion,tipo,responsable,idCliente) VALUES('" + lugar.getNombreLugar() + "','" + lugar.getDireccion() + "','" + lugar.getTipo() + "','" + lugar.getResponsable() + "'," + idCliente + ")";
            Conexion.getInstance().conectar();
            Conexion.getInstance().insert(query);
  } catch (SQLException ex) {
            Logger.getLogger(isgesis.PersistenciaEstado.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
